#include "FrakOutDataItem.h"

FrakOutDataItem::FrakOutDataItem() : m_cellSize(30), m_fractalDimension(0)
{
}

FrakOutDataItem::FrakOutDataItem(double cellSize) : m_cellSize(cellSize), m_fractalDimension(0)
{
}

FrakOutDataItem::FrakOutDataItem(double cellSize, const QSet<QPair<int,int> >& cells) :
        m_cellData(cells), m_cellSize(cellSize), m_fractalDimension(0)
{
}

void FrakOutDataItem::addCell(const QPair<int,int>& cell)
{
    m_cellData.insert(cell);
}

bool FrakOutDataItem::cellExists(const QPair<int,int>& cell) const
{
    return m_cellData.find(cell) != m_cellData.end();
}

const QSet<QPair<int,int> >& FrakOutDataItem::cells() const
{
    return m_cellData;
}

double FrakOutDataItem::cellSize() const
{
    return m_cellSize;
}

void FrakOutDataItem::clearCells()
{
    m_cellData.clear();
}

int FrakOutDataItem::numCells() const
{
    return m_cellData.size();
}

void FrakOutDataItem::removeCell(const QPair<int,int>& cell)
{
    m_cellData.remove(cell);
}

void FrakOutDataItem::setCells(const QSet<QPair<int,int> > cells)
{
    m_cellData = cells;
}

void FrakOutDataItem::setCellSize(double cellSize)
{
    m_cellSize = cellSize;
}

QDataStream& operator<<(QDataStream& out, const FrakOutDataItem& fracalcDataItem)
{
    out << fracalcDataItem.cellSize() << fracalcDataItem.cells();
    return out;
}

QDataStream& operator>>(QDataStream &in, FrakOutDataItem& fracalcDataItem)
{
    QSet<QPair<int,int> > cellData;
    double cellSize;

    in >> cellSize >> cellData;
    fracalcDataItem = FrakOutDataItem(cellSize, cellData);
    return in;
}
